In modern computer systems, storage devices are used to store data and program instructions. Examples of storage devices include integrated circuit (IC) storage devices (such as dynamic or static random access memories, flash memories, and electrically erasable and programmable read-only memories), hard disk drives, floppy disk drives, optical drives, and other types of storage devices.
The storage medium of certain types of storage devices are partitioned into predefined blocks for storing data. Such storage devices are referred to as “blocked storage devices.” In one example, the blocks of a disk-based storage device include sectors. The blocks of a storage medium are addressed by physical block addresses, which are usually mapped to logical block addresses for use in a host computer. In response to a request (read or write) from an application program, the file system in a host computer generates commands (read or write commands) containing logical block addresses. The read or write commands are sent by the file system through a storage device adapter in the host computer to a device controller in the storage device. The device controller performs the appropriate conversion of the logical block addresses to physical block addresses, which are then used to access corresponding blocks in the storage device.
Most files generated by a host computer system are too large to be stored within a single block of a storage device. Examples of such files include files containing formatted documents, files containing audio data, files containing video data, files containing multimedia data, and so forth. Large files are fragmented for storing in multiple blocks in the blocked storage device. Once fragmented into blocks, the characteristic of the original file (formatted document file, video file, audio file, and so forth) is lost. From the perspective of the storage device, each block of data is just a collection of bits, with the storage device unable to recognize whether such bits are part of a formatted document file, video file, audio file, or others. Such an arrangement reduces the features and flexibility of conventional storage devices.